package com.super8.super8newtv.api;

import okhttp3.Call;
import okhttp3.Response;

/**
 * 业务描述: api异常信息
 * 创 建 人: zhangl
 * 创建时间:2019-03-22 16:00:09
 */
public class ApiError extends Exception{

    public interface ErrorCode {

//        正确使用 HTTP 状态码
//        HTTP 协议中预定义了丰富的状态码，其中 4xx 表示客户端造成的异常，5xx 表示服务端产生的异常。以下是我们在 API 中经常用到的几种状态码：
        int HTTP_STATUS_OK=200; //"HTTP协议_请求成功  200 响应结果正常；
        int HTTP_STATUS_ERROR=400;  //"HTTP协议_错误的请求  400 错误的请求，
        int HTTP_STATUS_ERROR_UNAUTHORIZED=401; //"HTTP协议_未授权的请求  401 未授权的请求
        int HTTP_STATUS_ERROR_REQUEST_BAN=403;  //"HTTP协议_禁止请求  403 禁止请求；
        int HTTP_STATUS_ERROR_REQUEST_CONTENT=404; //HTTP协议_请求的内容不存在   404 请求的内容不存在；
        int HTTP_STATUS_ERROR_NETWORK=444;  //HTTP协议_请求网络错误,设备网络断开 ,
        int HTTP_STATUS_ERROR_SERVER=500;   //"HTTP协议_请求服务器内部错误  500 服务器内部错误，通常是未预期到的、不可恢复的服务端异常。

        // accessToken
        int ACCESS_TOKEN_INVALID_PARAMETER = 100;
        int ACCESS_TOKEN_INVALID_ACCESS_TOKEN = 101;
        int ACCESS_TOKEN_PARSE_ERROR = 110;
        int NETWORK_REQUEST_ERROR = 10000;
        int JSON_PARSE_ERROR = 11000;
    }

    public ApiError(int errorCode, String message, Throwable cause) {
        super(message, cause);
        this.cause = cause;
        this.errorCode = errorCode;
    }

    public ApiError(int errorCode, String message) {
        super(message);
        this.errorCode = errorCode;
        this.errorMessage = message;
    }

    public ApiError(String message){
        super(message);
    }

    public ApiError(){

    }

    private int errorCode;
    private String errorMessage;
    private Throwable cause;

    private Call call;

    public Call getCall() {
        return call;
    }

    public void setCall(Call call) {
        this.call = call;
    }

    public Response getResponse() {
        return response;
    }

    public void setResponse(Response response) {
        this.response = response;
    }

    private Response response;

    public int getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(int errorCode) {
        this.errorCode = errorCode;
    }
    public void setErrorCode(int errorCode,String errorMessage) {
        this.errorCode = errorCode;
        setErrorMessage(errorMessage);
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }

    public Throwable getCause() {
        return cause;
    }

//    public void setCause(Throwable cause) {
//        this.cause = cause;
//    }
}
